package controller

import (
	"notes/model"
	"notes/util"
	"strconv"

	"github.com/gin-gonic/gin"
)

// AddTag 添加标签
// @Summary 添加tag
// @Description 添加tag
// @Tags tag
// @Produce json
// @Consume json
// @Accept json
// @Router /tag/add [post]
// @Param _token query string true "token"
// @Param data body model.Tag true "data"
// @Success 200 {object} util.JSONRET "成功返回token"
func AddTag(c *gin.Context) {
	var data model.Tag
	c.ShouldBind(&data)
	err := data.Add()
	util.JSON(c, err, nil)
}

// GetTag 获取
// @Summary 获取
// @Description 获取
// @Tags tag
// @Produce json
// @Consume json
// @Accept json
// @Router /tag/get [get]
// @Param _token query string true "token"
// @Success 200 {object} util.JSONRET "成功返回token"
func GetTag(c *gin.Context) {
	insts, err := model.GetTags()
	data := map[string]interface{}{
		"insts": insts,
	}
	util.JSON(c, err, data)
}

// DeleteTag 删除tag
// @Summary 删除
// @Description 删除
// @Tags tag
// @Produce json
// @Consume json
// @Accept json
// @Router /tag/delete [get]
// @Param _token query string true "token"
// @Param id query string true "id"
// @Success 200 {object} util.JSONRET "成功返回token"
func DeleteTag(c *gin.Context) {
	cid, _ := strconv.Atoi(c.DefaultQuery("id", "0"))
	err := model.DeleteTag(uint(cid))
	util.JSON(c, err, nil)
}

// GetTagArticles 获取一个标签下的所有文章
// @Summary 获取一个标签下的所有文章
// @Description 获取一个标签下的所有文章
// @Tags tag
// @Produce json
// @Consume json
// @Accept json
// @Router /tag/get-articles [get]
// @Param _token query string true "token"
// @Param id query string true "id"
// @Success 200 {object} util.JSONRET "成功返回token"
func GetTagArticles(c *gin.Context) {
	id, _ := strconv.Atoi(c.DefaultQuery("id", "0"))
	inst, err := model.GetTagArticles(uint(id))

	data := map[string]interface{}{
		"inst": inst,
	}

	util.JSON(c, err, data)
}
